package com.cdhong.shop.backend.util;

import org.apache.commons.codec.digest.DigestUtils;

import java.security.SecureRandom;
import java.util.Base64;

/**
 * @Description 将明文密码进行MD5加盐加密
 * @Author CDHong
 * @Date 2024/4/20 8:37
 **/
public class SaltMD5Util {

    /**
     * @Description 生成一个盐，可以是随意录入的一个固定字符串，也可以是16位的随机数
     * @Author CDHong
     * @Param [length] 盐的长度
     * @Date 2024/4/20 8:56
     **/
    public static String createSlat(int length) {
        SecureRandom random = new SecureRandom();
        byte[] salt = new byte[length];
        random.nextBytes(salt);
        // 生成盐
        return Base64.getEncoder().encodeToString(salt);
    }

    public static void main(String[] args) {
        String password = "123456";
        //每次用户注册新生成一个salt
        String slat = SaltMD5Util.createSlat(16);
        System.out.println("slat：" + slat); // fmKJ3jV9Ja/RoBaq4FPcLA==
        //对密码进行加密
        String md5Password = DigestUtils.md5Hex(password + slat);
        System.out.println("MD5+slat加密：" + md5Password); // e14d76ae156156d19f812e9eeba2408e

    }

}
